In modeling environment such as CAD environments, a user may construct a model by specifying a number of rules that define the geometry of the model. The geometry that makes up the model is composed of set of “surfaces” connected to each other through “edges.” A solid body is formed when every edge has at least two adjacent surfaces attached to it. For example, a cube is a solid body because each edge includes at least two adjacent surfaces. An example of non-solid body is a piece of paper, where each of four edges are attached to a single surface. A geometry may represent a component of a model, which can take a wide variety of shapes or sizes. For example, a model of a computer mouse may include a cylindrical geometry having a number of surfaces that represents the mouse wheel, flat rectangular geometries representing the mouse buttons, and a spherical geometry representing a trackball.
In many modeling environments, geometries and their corresponding surfaces may be moved relative to each other in three-dimensional space. This may allow, for example, a user to create a set of surfaces representing a button on a mouse, and then experiment with different button placements in order to achieve an ergonomically beneficial design. When a geometry, surface, or set of surfaces can be moved instead of being restricted to the place in which it was defined, this is an example of “flexible modeling.”
However, a problem arises in flexible modeling environments when the movement of a surface causes the surfaces of a solid body to interfere with other surfaces of the solid body. In the above example, the movement of a mouse button might mean that a part of the mouse button would occupy space that is already occupied by the geometry corresponding to the mouse wheel. Accordingly, modeling environments may restrict the ability of a user to move specific surfaces into a new location if moving the surfaces would cause them to interfere with another surface. This restriction prevents two different sets of surfaces or geometries from occupying the same space at the same time.
Such a restriction is not always desirable. For example, a user may create a geometry that the user later wishes to integrate with some other geometry. This may require the user to eliminate the individual geometries and reconstruct a new, third geometry that represents the integration of the first and second geometries. This process can be time-consuming and complicated.
Additionally, modeling environments are often used to develop or prototype an object before the object is manufactured. The design that results from the modeling environment may be used as a blueprint for a manufacturer, or the model itself may serve as an input to a rapid prototyping machine.
In order to effectively serve as a basis for a manufactured object, the model in the modeling environment should fulfill certain considerations or meet certain requirements. One exemplary requirement is that the model must represent a solid body. Such a rule is a key requirement for proper reconstruction of a solid geometry after Flexible Modeling operation is performed.
Another exemplary requirement is that the surfaces of a particular model should be as coextensive as possible. In the manufacturing or prototyping process, it is desirable for the faces of certain parts of manufactured objects to be as coextensive as possible. This reduces the manufacturing complexity and costs while simultaneously improving the structural integrity of the manufactured object. For example, a user in a CAD environment may move a first set of surfaces close to a second set of surfaces with the intention that two of the surfaces meet (e.g., moving two cubes together to form a rectangle). However, a gap may exist between the surfaces that is difficult to see in the modeling environment, resulting in surfaces that are not coextensive.
Therefore, there is a need for a modeling environment that is capable of resolving interference between geometries and surfaces in a modeling environment that allows the model to form a unitary solid body. Further, there is a need for a modeling environment with the ability to ensure that surfaces in a model are as coextensive as possible, if desired.